package com.htt.bms.domain.sys;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @author 侯婷婷
 * @version 1.0
 * @description： 用户
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName(value = "sys_user")
@ApiModel(value = "用户")
public class SysUser {
    @ApiModelProperty("主键id")
    @TableId(type = IdType.ASSIGN_UUID)
    private String id;//主键id

    @ApiModelProperty("用户名称")
    private String username;//用户名称

    @ApiModelProperty("密码")
    private String password;//密码

    @ApiModelProperty("用户名称")
    private String nickname;//用户昵称

    @ApiModelProperty("用户类型：0.超级管理员,1.管理员,2.普通用户")
    private Integer type;//用户类型：0.超级管理员，1.管理员，2.普通用户

    @ApiModelProperty("用户类型")
    @TableField(exist = false)
    private String typeName;//用户类型

    @ApiModelProperty("性别：0.男,1.女")
    private Integer gender;//性别：0.男，1.女

    @ApiModelProperty("性别")
    @TableField(exist = false)
    private String genderName;//性别

    /**
     * druid低版本不支持LocalDate类型，将版本升级为1.1.18
     */
    @ApiModelProperty("出生日期")
    private LocalDate birthday;//出生日期

    @ApiModelProperty("地址")
    private String address;//地址

    /**
     * mybatis-plus默认启动驼峰命名下划线规则！！！
     */
    @ApiModelProperty("微信唯一标识")
    private String openId;//微信唯一标识

    @ApiModelProperty("邮箱")
    private String email;//邮箱

    @ApiModelProperty("记住密码")
    private Integer remember;//记住密码

    @ApiModelProperty("删除状态：0.正常,1.已删除")
    private Integer delFlag;//删除状态：0.正常，1.已删除

    @ApiModelProperty("删除状态")
    @TableField(exist = false)
    private String delFlagName;//删除状态

    @ApiModelProperty("更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
    private LocalDateTime updateTime;//更新时间

    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
    private LocalDateTime createTime;//创建时间

    @ApiModelProperty("备注")
    private String remarks;//备注

    @ApiModelProperty("权限")
    @TableField(exist = false)
    private String role;//权限

    @ApiModelProperty("组织id")
    @TableField(exist = false)
    private Integer orgId;//组织id

    @ApiModelProperty("值ids")
    @TableField(exist = false)
    private List<Integer> orgIds;//值IDS

}
